<html>
<head>
<meta charset="utf-8"/>
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible"/>
<meta content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no,viewport-fit=cover" name="viewport"/>
<meta content="telephone=no" name="format-detection"/>
<style type="text/css">

#watermark {

  position: relative;
  overflow: hidden;
}

#watermark .x {
  position: absolute;
  top: 800;
  left: 400;
  color: #3300ff;
  font-size: 50px;
  pointer-events: none;
  opacity:0.5;
  filter:Alpha(opacity=50);
  -webkit-transform: rotate(45deg);
  -moz-transform: rotate(45deg);
}
    </style>
<style type="text/css">
 html{color:#333;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;text-rendering:optimizelegibility;font-family:Helvetica Neue,PingFang SC,Verdana,Microsoft Yahei,Hiragino Sans GB,Microsoft Sans Serif,WenQuanYi Micro Hei,sans-serif}html.borderbox *,html.borderbox :after,html.borderbox :before{box-sizing:border-box}article,aside,blockquote,body,button,code,dd,details,dl,dt,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hr,input,legend,li,menu,nav,ol,p,pre,section,td,textarea,th,ul{margin:0;padding:0}article,aside,details,figcaption,figure,footer,header,menu,nav,section{display:block}audio,canvas,video{display:inline-block}body,button,input,select,textarea{font:300 1em/1.8 PingFang SC,Lantinghei SC,Microsoft Yahei,Hiragino Sans GB,Microsoft Sans Serif,WenQuanYi Micro Hei,Helvetica,sans-serif}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}blockquote{position:relative;color:#999;font-weight:400;border-left:1px solid #1abc9c;padding-left:1em;margin:1em 3em 1em 2em}@media only screen and (max-width:640px){blockquote{margin:1em 0}}abbr,acronym{border-bottom:1px dotted;font-variant:normal}abbr{cursor:help}del{text-decoration:line-through}address,caption,cite,code,dfn,em,th,var{font-style:normal;font-weight:400}ol,ul{list-style:none}caption,th{text-align:left}q:after,q:before{content:""}sub,sup{font-size:75%;line-height:0;position:relative}:root sub,:root sup{vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}a{color:#1abc9c}a:hover{text-decoration:underline}.typo a{border-bottom:1px solid #1abc9c}.typo a:hover{border-bottom-color:#555;color:#555}.typo a:hover,a,ins{text-decoration:none}.typo-u,u{text-decoration:underline}mark{background:#fffdd1;border-bottom:1px solid #ffedce;padding:2px;margin:0 5px}code,pre,pre tt{font-family:Courier,Courier New,monospace}pre{background:hsla(0,0%,97%,.7);border:1px solid #ddd;padding:1em 1.5em;display:block;-webkit-overflow-scrolling:touch}hr{border:none;border-bottom:1px solid #cfcfcf;margin-bottom:.8em;height:10px}.typo-small,figcaption,small{font-size:.9em;color:#888}b,strong{font-weight:700;color:#000}[draggable]{cursor:move}.clearfix:after,.clearfix:before{content:"";display:table}.clearfix:after{clear:both}.clearfix{zoom:1}.textwrap,.textwrap td,.textwrap th{word-wrap:break-word;word-break:break-all}.textwrap-table{table-layout:fixed}.serif{font-family:Palatino,Optima,Georgia,serif}.typo-dl,.typo-form,.typo-hr,.typo-ol,.typo-p,.typo-pre,.typo-table,.typo-ul,.typo dl,.typo form,.typo hr,.typo ol,.typo p,.typo pre,.typo table,.typo ul,blockquote{margin-bottom:1rem}h1,h2,h3,h4,h5,h6{font-family:PingFang SC,Helvetica Neue,Verdana,Microsoft Yahei,Hiragino Sans GB,Microsoft Sans Serif,WenQuanYi Micro Hei,sans-serif;color:#000;line-height:1.35}.typo-h1,.typo-h2,.typo-h3,.typo-h4,.typo-h5,.typo-h6,.typo h1,.typo h2,.typo h3,.typo h4,.typo h5,.typo h6{margin-top:1.2em;margin-bottom:.6em;line-height:1.35}.typo-h1,.typo h1{font-size:2em}.typo-h2,.typo h2{font-size:1.8em}.typo-h3,.typo h3{font-size:1.6em}.typo-h4,.typo h4{font-size:1.4em}.typo-h5,.typo-h6,.typo h5,.typo h6{font-size:1.2em}.typo-ul,.typo ul{margin-left:1.3em;list-style:disc}.typo-ol,.typo ol{list-style:decimal;margin-left:1.9em}.typo-ol ol,.typo-ol ul,.typo-ul ol,.typo-ul ul,.typo li ol,.typo li ul{margin-bottom:.8em;margin-left:2em}.typo-ol ul,.typo-ul ul,.typo li ul{list-style:circle}.typo-table td,.typo-table th,.typo table caption,.typo table td,.typo table th{border:1px solid #ddd;padding:.5em 1em;color:#666}.typo-table th,.typo table th{background:#fbfbfb}.typo-table thead th,.typo table thead th{background:hsla(0,0%,95%,.7)}.typo table caption{border-bottom:none}.typo-input,.typo-textarea{-webkit-appearance:none;border-radius:0}.typo-em,.typo em,caption,legend{color:#000;font-weight:inherit}.typo-em{position:relative}.typo-em:after{position:absolute;top:.65em;left:0;width:100%;overflow:hidden;white-space:nowrap;content:"\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB\30FB"}.typo img{max-width:100%}.common-content{font-weight:400;color:#353535;line-height:1.75rem;white-space:normal;word-break:normal;font-size:1rem}.common-content img{display:block;max-width:100%;background-color:#eee}.common-content audio,.common-content video{width:100%;background-color:#eee}.common-content center,.common-content font{margin-top:1rem;display:inline-block}.common-content center{width:100%}.common-content pre{margin-top:1rem;padding-left:0;padding-right:0;position:relative;overflow:hidden}.common-content pre code{font-size:.8rem;font-family:Consolas,Liberation Mono,Menlo,monospace,Courier;display:block;width:100%;box-sizing:border-box;padding-left:1rem;padding-right:1rem;overflow-x:auto}.common-content hr{border:none;margin-top:1.5rem;margin-bottom:1.5rem;border-top:1px solid #f5f5f5;height:1px;background:none}.common-content b,.common-content h1,.common-content h2,.common-content h3,.common-content h4,.common-content h5,.common-content strong{font-weight:700}.common-content h1,.common-content h2{font-size:1.125rem;margin-bottom:.45rem}.common-content h3,.common-content h4,.common-content h5{font-size:1rem;margin-bottom:.45rem}.common-content p{font-weight:400;color:#353535;margin-top:.15rem}.common-content .orange{color:#ff5a05}.common-content .reference{font-size:1rem;color:#888}.custom-rich-content h1{margin-top:0;font-weight:400;font-size:15.25px;border-bottom:1px solid #eee;line-height:2.8}.custom-rich-content li,.custom-rich-content p{font-size:14px;color:#888;line-height:1.6}table.hljs-ln{margin-bottom:0;border-spacing:0;border-collapse:collapse}table.hljs-ln,table.hljs-ln tbody,table.hljs-ln td,table.hljs-ln tr{box-sizing:border-box}table.hljs-ln td{padding:0;border:0}table.hljs-ln td.hljs-ln-numbers{min-width:15px;color:rgba(27,31,35,.3);text-align:right;white-space:nowrap;cursor:pointer;user-select:none}table.hljs-ln td.hljs-ln-code,table.hljs-ln td.hljs-ln-numbers{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,Courier,monospace;font-size:12px;line-height:20px;vertical-align:top}table.hljs-ln td.hljs-ln-code{position:relative;padding-right:10px;padding-left:10px;overflow:visible;color:#24292e;word-wrap:normal;white-space:pre}video::-webkit-media-controls{overflow:hidden!important}video::-webkit-media-controls-enclosure{width:calc(100% + 32px);margin-left:auto}.button-cancel{color:#888;border:1px solid #888;border-radius:3px;margin-right:12px}.button-cancel,.button-primary{-ms-flex-positive:1;flex-grow:1;height:35px;display:inline-block;font-size:15px;text-align:center;line-height:36px}.button-primary{color:#fff;background-color:#ff5a05;border-radius:3px}@font-face{font-family:iconfont;src:url(//at.alicdn.com/t/font_372689_bwwwtosxtzp.eot);src:url(//at.alicdn.com/t/font_372689_bwwwtosxtzp.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_372689_bwwwtosxtzp.woff) format("woff"),url(//at.alicdn.com/t/font_372689_bwwwtosxtzp.ttf) format("truetype"),url(//at.alicdn.com/t/font_372689_bwwwtosxtzp.svg#iconfont) format("svg")}@font-face{font-family:player-font;src:url(//at.alicdn.com/t/font_509397_1cyjv4o90qiod2t9.eot);src:url(//at.alicdn.com/t/font_509397_1cyjv4o90qiod2t9.eot#iefix) format("embedded-opentype"),url(//at.alicdn.com/t/font_509397_1cyjv4o90qiod2t9.woff) format("woff"),url(//at.alicdn.com/t/font_509397_1cyjv4o90qiod2t9.ttf) format("truetype"),url(//at.alicdn.com/t/font_509397_1cyjv4o90qiod2t9.svg#player-font) format("svg")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-webkit-text-stroke-width:.2px;-moz-osx-font-smoothing:grayscale}html{background:#fff;min-height:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{width:100%}body.fixed{overflow:hidden;position:fixed;width:100vw;height:100vh}i{font-style:normal}a{word-wrap:break-word;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:hover{text-decoration:none}.fade-enter-active,.fade-leave-active{transition:opacity .3s}.fade-enter,.fade-leave-to{opacity:0}.MathJax,.MathJax_CHTML,.MathJax_MathContainer,.MathJax_MathML,.MathJax_PHTML,.MathJax_PlainSource,.MathJax_SVG{outline:0}.ios-app-switch .js-audit{display:none}._loading_wrap_{position:fixed;width:100vw;height:100vh;top:50%;left:50%;transform:translate(-50%,-50%);z-index:999}._loading_div_class_,._loading_wrap_{display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center}._loading_div_class_{word-wrap:break-word;padding:.5rem .75rem;text-align:center;z-index:9999;font-size:.6rem;max-width:60%;color:#fff;border-radius:.25rem;-ms-flex-direction:column;flex-direction:column}._loading_div_class_ .message{color:#353535;font-size:16px;line-height:3}.spinner{animation:circle-rotator 1.4s linear infinite}.spinner *{line-height:0;box-sizing:border-box}@keyframes circle-rotator{0%{transform:rotate(0deg)}to{transform:rotate(270deg)}}.path{stroke-dasharray:187;stroke-dashoffset:0;transform-origin:center;animation:circle-dash 1.4s ease-in-out infinite,circle-colors 5.6s ease-in-out infinite}@keyframes circle-colors{0%{stroke:#ff5a05}to{stroke:#ff5a05}}@keyframes circle-dash{0%{stroke-dashoffset:187}50%{stroke-dashoffset:46.75;transform:rotate(135deg)}to{stroke-dashoffset:187;transform:rotate(450deg)}}.confirm-box-wrapper,.confirm-box-wrapper .mask{position:absolute;top:0;left:0;right:0;bottom:0}.confirm-box-wrapper .mask{background:rgba(0,0,0,.6)}.confirm-box-wrapper .confirm-box{position:fixed;top:50%;left:50%;width:267px;background:#fff;transform:translate(-50%,-50%);border-radius:7px}.confirm-box-wrapper .confirm-box .head{margin:0 18px;font-size:18px;text-align:center;line-height:65px;border-bottom:1px solid #d9d9d9}.confirm-box-wrapper .confirm-box .body{padding:18px;padding-bottom:0;color:#353535;font-size:12.5px;max-height:150px;overflow:auto}.confirm-box-wrapper .confirm-box .foot{display:-ms-flexbox;display:flex;-ms-flex-direction:row;flex-direction:row;padding:18px}.confirm-box-wrapper .confirm-box .foot .button-cancel{border:1px solid #d9d9d9}.hljs{display:block;overflow-x:auto;padding:.5em;color:#333;background:#f8f8f8}.hljs-comment,.hljs-quote{color:#998;font-style:italic}.hljs-keyword,.hljs-selector-tag,.hljs-subst{color:#333;font-weight:700}.hljs-literal,.hljs-number,.hljs-tag .hljs-attr,.hljs-template-variable,.hljs-variable{color:teal}.hljs-doctag,.hljs-string{color:#d14}.hljs-section,.hljs-selector-id,.hljs-title{color:#900;font-weight:700}.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type{color:#458;font-weight:700}.hljs-attribute,.hljs-name,.hljs-tag{color:navy;font-weight:400}.hljs-link,.hljs-regexp{color:#009926}.hljs-bullet,.hljs-symbol{color:#990073}.hljs-built_in,.hljs-builtin-name{color:#0086b3}.hljs-meta{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}




    </style>
<style type="text/css">
        .button-cancel[data-v-87ffcada]{color:#888;border:1px solid #888;border-radius:3px;margin-right:12px}.button-cancel[data-v-87ffcada],.button-primary[data-v-87ffcada]{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;height:35px;display:inline-block;font-size:15px;text-align:center;line-height:36px}.button-primary[data-v-87ffcada]{color:#fff;background-color:#ff5a05;border-radius:3px}.pd[data-v-87ffcada]{padding-left:1.375rem;padding-right:1.375rem}.article[data-v-87ffcada]{max-width:70rem;margin:0 auto}.article .article-unavailable[data-v-87ffcada]{color:#fa8919;font-size:15px;font-weight:600;line-height:24px;border-radius:5px;padding:12px;background-color:#f6f7fb;margin-top:20px}.article .article-unavailable .iconfont[data-v-87ffcada]{font-size:12px}.article .main[data-v-87ffcada]{padding:1.25rem 0;margin-bottom:52px}.article-title[data-v-87ffcada]{color:#353535;font-weight:400;line-height:1.65rem;font-size:1.34375rem}.article-info[data-v-87ffcada]{color:#888;font-size:.9375rem;margin-top:1.0625rem}.article-content[data-v-87ffcada]{margin-top:1.0625rem}.article-content.android video[data-v-87ffcada]::-webkit-media-controls-fullscreen-button{display:none}.copyright[data-v-87ffcada]{color:#b2b2b2;padding-bottom:20px;margin-top:20px;font-size:13px}.audio-player[data-v-87ffcada]{width:100%;margin:20px 0}.to-comment[data-v-87ffcada]{overflow:hidden;padding-top:10px;margin-bottom:-30px}.to-comment a.button-primary[data-v-87ffcada]{float:right;height:20px;font-size:12px;line-height:20px;padding:4px 8px;cursor:pointer}.article-comments[data-v-87ffcada]{margin-top:2rem}.article-comments h2[data-v-87ffcada]{text-align:center;color:#888;position:relative;z-index:1;margin-bottom:1rem}.article-comments h2[data-v-87ffcada]:before{border-top:1px dotted #888;content:"";position:absolute;top:56%;left:0;width:100%;z-index:-1}.article-comments h2 span[data-v-87ffcada]{font-size:15.25px;font-weight:400;padding:0 1rem;background:#fff;display:inline-block}.article-sub-bottom[data-v-87ffcada]{z-index:10;cursor:pointer}.switch-btns[data-v-87ffcada]{height:76px;cursor:pointer;padding-top:24px;padding-bottom:24px;border-bottom:10px solid #f6f7fb;position:relative}.switch-btns[data-v-87ffcada]:before{content:" ";height:1px;background:#e8e8e8;position:absolute;top:0;left:0;-webkit-box-sizing:border-box;box-sizing:border-box;left:1.375rem;right:1.375rem}.switch-btns .btn[data-v-87ffcada]{height:38px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.switch-btns .btn .tag[data-v-87ffcada]{-webkit-box-flex:0;-ms-flex:0 0 62px;flex:0 0 62px;text-align:center;color:#888;font-size:14px;border-radius:10px;height:22px;line-height:22px;background:#f6f7fb;font-weight:400}.switch-btns .btn .txt[data-v-87ffcada]{margin-left:10px;-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto;color:#888;font-size:15px;height:22px;line-height:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:400}@media (max-width:769px){.article .breadcrumb[data-v-87ffcada]{padding-top:10px;padding-bottom:10px}}





    </style>
<style type="text/css">
        .comment-item{list-style-position:inside;width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;margin-bottom:1rem}.comment-item a{border-bottom:none}.comment-item .avatar{width:2.625rem;height:2.625rem;-ms-flex-negative:0;flex-shrink:0;border-radius:50%}.comment-item .info{margin-left:.5rem;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.comment-item .info .hd{width:100%;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.comment-item .info .hd .username{color:#888;font-size:15.25px;font-weight:400;line-height:1.2}.comment-item .info .hd .control{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center}.comment-item .info .hd .control .btn-share{color:#888;font-size:.75rem;margin-right:1rem}.comment-item .info .hd .control .btn-praise{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-size:15.25px;text-decoration:none}.comment-item .info .hd .control .btn-praise i{color:#888;display:inline-block;font-size:.75rem;margin-right:.3rem;margin-top:-.01rem}.comment-item .info .hd .control .btn-praise i.on,.comment-item .info .hd .control .btn-praise span{color:#ff5a05}.comment-item .info .bd{color:#353535;font-size:15.25px;font-weight:400;white-space:normal;word-break:break-all;line-height:1.6}.comment-item .info .time{color:#888;font-size:9px;line-height:1}.comment-item .info .reply .reply-hd{font-size:15.25px}.comment-item .info .reply .reply-hd span{margin-left:-12px;color:#888;font-weight:400}.comment-item .info .reply .reply-hd i{color:#ff5a05;font-size:15.25px}.comment-item .info .reply .reply-content{color:#353535;font-size:15.25px;font-weight:400;white-space:normal;word-break:break-all}.comment-item .info .reply .reply-time{color:#888;font-size:9px}




    </style>
</head>
<body>
<div id="app">
<div class="article" data-v-87ffcada="" id="watermark">

<div class="main main-app" data-v-87ffcada="">
<h1 class="article-title pd" data-v-87ffcada="">
                05讲快捷键进阶攻略
            </h1>
<div class="article-content typo common-content pd" data-v-87ffcada=""><img data-v-87ffcada="" src="https://static001.geekbang.org/resource/image/80/5a/800df2288967e87839dec38329db305a.jpg"/>
<div class="" data-v-87ffcada="" id="article-content">
<div class="text">
<p>软件开发有个非常流行的原则， 叫做不要重复自己（Don’t Repeat Yourself）。其实除了写代码，我们在使用编辑器的时候，这也是一个非常值得贯彻的准则。</p>
<p>在上一讲的时候，我们一起学习了如何进行光标的移动和文本选择等基本操作，除此之外，你还可以随意将它们组合成“一个事务”以达成你想要的目标。但是如果你用过Vim，你肯定会吐槽说这“三脚猫”的功能还不够方便，也不够酷。</p>
<p>虽然说写代码是一个创造的过程，但很多时候，我们写代码并不总是行云流水从上写到下的。比如说你新写一个功能，你会先把整个逻辑思路写下来，然后重新审视整个代码：这一行好像有点问题，删掉；这里好像少了一个判断，新增几行代码；那段代码好像提前执行比较好，然后你把它挪到了前面的位置。</p>
<p>面对这么多操作需求，那今天我们一起来看下，在 VS Code 编辑器里，还有哪些快捷方式能够给你的代码编辑进一步提速。</p>
<h2>代码行编辑</h2>
<p>下面我就以一段 CSS 代码作为例子，来和你分享下代码行编辑中的高阶技巧。</p>
<pre><code>.foo {
  padding: 5px;
  margin: 5px;
  font-size: 5px;
}
</code></pre>
<p>在上一讲中，你知道了要删掉一行代码，你可以选中它，然后再按 Delete 键。不过还有一个快捷键，那就是直接按下 “ Cmd + Shift + K ” (Windows 上是 “Ctrl + Shift + K”)，当前代码行就可以被删除了。</p><!-- [[[read_end]]] -->
<p><img alt="" src="https://static001.geekbang.org/resource/image/5d/fb/5d0771c43463021df8038009fe21c3fb.gif"/></p>
<center><span class="reference"> “ Cmd + Shift + K ”，删除当前代码行</span></center>
<p>如果你只是想要剪切这行代码，那么你直接按下 “ Cmd + x ” (Windows 上是 “Ctrl + x”) 即可。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/66/95/66757a92d18035f6a479a082f43d5a95.gif"/></p>
<center><span class="reference"> “ Cmd + x ”，剪切某一行代码</span></center>
<p>我想你肯定很清楚，“Enter” 键的基础作用是能在编辑器里光标所在的位置添加一个换行符。但是很多时候你可能并不是单纯地要将一行分成两段，而是希望在这行的下面或者上面开始一段新的代码。</p>
<p>这个功能对应的快捷键非常好记，它跟 “Enter”键十分接近。当你想在当前行的下面新开始一行时，你只需按下 “Cmd + Enter” （Windows 上是 “Ctrl + Enter”）；而当你想在当前行的上面新开始一行时，你只要按下 “Cmd + Shift + Enter” （Windows 上是 “Ctrl + Shift + Enter”）就行了。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/b2/d1/b2d7a80ded072f62a19ebce6b9ecb8d1.gif"/></p>
<center><span class="reference">在当前行的下面或者上面开始一段新的代码</span></center>
<p>当你想移动一段代码时，一般你可能会分三步走：先选中，再剪切，最后粘贴。不过我更喜欢的是按住 “Option + 上下方向键”（Windows中就是“Alt + 上下方向键”） ，将当前行，或者当前选中的几行代码，在编辑器里上下移动。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/25/be/25053dfebdb3117cb89604615bf355be.gif"/></p>
<center><span class="reference">“Option + 上下方向键”，上下移动当前行</span></center>
<p>如果你同时按住 “Shift” 键的话，也就是 “Option + Shift + 上下方向键”（Windows中就是“Alt + shift + 上下方向键”），那就可以复制这几行，然后粘贴到当前行的上面或者下面。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/d4/16/d4f9ae5ad3a0bb62e734386b7522ba16.gif"/></p>
<center><span class="reference"> “Option + Shift + 上下方向键”，向上或下复制当前行</span></center>
<p>另外，你在尝试“Option + 上下方向键”这个快捷键“上下移动”时，可能也发现了，当你把一段代码移动到花括号里面或者外面时，代码前的制表符或者空格的数量会自动发生改变，这样你就不需要移动完代码后再调整了。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/e5/c2/e564fd6cac59e967a76852b41164a8c2.gif"/></p>
<center><span class="reference">移动代码行，代码缩进发生改变</span></center>
<h2>编程语言相关的命令</h2>
<p>上面我介绍的几个命令，都是编辑器的基础功能，它和你所使用的语言无关。而接下来我要介绍的这几个命令，则会根据编程语言的不同，产生不同的结果。</p>
<h3>1. 添加注释</h3>
<p>你在调试代码时，肯定经常需要临时地把一些代码注释掉。如果你要将一行代码注释掉，你只需按下 “ Cmd + / ” （Windows 上时 “Ctrl + /”）。如果你需要把一整段代码注释掉，按下 “ Option + Shift + A”即可。</p>
<p>你可以分别在 JavaScript 和 CSS 文件里使用这两个命令，你会发现这个命令会分别使用 JavaScript 和 CSS 各自的注释语法来添加注释。</p>
<p>当你在 JavaScript 文件里按下 “Cmd + /”，VS Code 在这行代码前添加了两个 “/”。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/bc/03/bcf7a1d745b94941df835fd6ffe4d003.gif"/></p>
<center><span class="reference">注释JavaScript代码</span></center>
<p>当你在 CSS 文件里按下 “Cmd + /”，VS Code 则是在这行代码前添加了 “/* ” ，再最后添加了 “ */”。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/5f/c6/5fe1c2801f6a674a489e7879065928c6.gif"/></p>
<center><span class="reference">注释CSS代码</span></center>
<h3>2. 代码格式化</h3>
<p>我们平常在做自己的小项目或者随便写一些脚本的时候，可能不会太在意代码的格式。不过一旦开始团队合作，整个项目组则会选择同一个代码风格和格式以有效降低协同成本。所以定期对自己写的代码进行格式化是个很好的习惯。</p>
<p>你可以按下 “Option + Shift + F” （Windows 上是 Alt + Shift + F）来对整个文档进行格式化，VS Code 也会根据你当前的语言，选择相关的插件。当然，前提条件是你已经安装了相关插件。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/a5/64/a5b9236b0510d3f00f9ff1bc2dc74064.gif"/></p>
<center><span class="reference">格式化CSS代码</span></center>
<p>你也可以选中一段代码，然后按下 “Cmd + K Cmd + F” （Windows 上是 Ctrl + K Ctrl + F），这样只有这段被选中的代码才会被格式化。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/ac/91/ac64dceb4a8e7b52ff22854a1a787691.gif"/></p>
<center><span class="reference">格式化选中的代码行</span></center>
<h3>3. 代码缩进</h3>
<p>有的时候，你会觉得代码格式化太重了，需要的可能只是把代码里的缩进调整一下。这时你可以打开命令面板（快捷键“Cmd + Shift + P”），搜索 “缩进”，然后使用 “重新缩进行” 将整个文档的缩进进行调整，但更多时候，你只需要运行 “重新缩进选中行” 来调整部分选中代码行的缩进。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/09/64/09ac503b4beeaffc657b06e3a2d7c664.gif"/></p>
<center><span class="reference">调整代码缩进</span></center>
<h2>其他</h2>
<p>上面的这些命令和快捷键，可以说是 VS Code 团队在开发编辑器时精心设计和规划的。不过 VS Code 里还有不少有趣的命令，它们看起来跟其他命令没有什么联系，快捷键的设置也看似没有什么章法。</p>
<p>但其实它们中的大部分都是来自于社区，开发者是在多年软件开发和编辑器使用的过程中，自己摸索出的一些命令和快捷方式，然后在社区里广为流传，于是乎官方也就把这些功能做到了 VS Code 中。</p>
<p>下面我再快速列举几个小技巧，希望你能记住，并快速练习，以成为自己的肌肉记忆。</p>
<p><strong>第一个是调换字符的位置</strong>。你可以按下 “Ctrl + t” （Windows 上未绑定快捷键，可以打开命令面板，搜索 ”转置游标处的字符“） 来把当前光标前后的字符调换位置。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/b3/56/b34eefb1b2a62f38a86d52848e993856.gif"/></p>
<center><span class="reference"> “Ctrl + t”，调换字符位置</span></center>
<p><strong>第二个是调整字符的大小写</strong>，我估计这个你会经常用到。你可以选中一串字符，然后在命令面板里运行“转换为大写”或 “转换为小写”,  来变换字符的大小写。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/06/a6/064a0adfb0c9b1f889683733321b81a6.gif"/></p>
<center><span class="reference">调整代码的大小写形式</span></center>
<p><strong>第三个是合并代码行</strong>。有的时候你可能会为了避免代码看起来过于冗余，就会把比较短小的几行代码合并到一行里面去。这时，你只需要按下  “ Ctrl + j ” （Windows 上未绑定快捷键，可以打开命令面板，搜索 ”合并行“）就可以了，而不需要不断地调整光标、删除换行符。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/55/4e/55fac329ae1cb90542a346e54e97b04e.gif"/></p>
<center><span class="reference">“ Ctrl + j ”，合并代码行</span></center>
<p><strong>第四个是行排序</strong>。无论是你在写代码，还是写 Markdown，你都可以把代码行按照字母序进行重新排序。不过这个命令比较小众，VS Code 并没有给这个命令指定快捷键，你可以调出命令面板，然后搜索 “按升序排列行” 或者 “按降序排列行” 命令执行。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/a7/ad/a714dc217d94dbf0ade1bb7830d100ad.gif"/></p>
<center><span class="reference">“Sort Lines Ascending” 命令执行，按升序排列行</span></center>
<p><strong>第五个是撤销光标的移动和选择</strong>。有的时候你移动完光标之后，又希望把光标回退到上一个位置，这时你只需按下 “Cmd + U”（Windows 上是 “Ctrl + U”），就可以撤销这一次光标的移动。</p>
<p><img alt="" src="https://static001.geekbang.org/resource/image/45/c1/450c86ffaf853d883d0860e64c2b31c1.gif"/></p>
<center><span class="reference">“Cmd + U”，撤销光标的移动和选择</span></center>
<h2>小结</h2>
<p>今天我介绍了十几个进阶的命令和快捷键，相较于上一讲光标的移动和选择，它们更贴近于实际工作，但记忆起来就相对不容易了。这时你就需要进行一定的刻意训练，比如说你想把一行代码注释掉，在移动光标到行首，然后输入 “//” 之前，你想一想，有没有办法更好、更便捷地来进行这个操作。</p>
<p>在这样的思维训练过程中，你可能会发现，很多日常频繁使用的操作，它们并没有对应的快捷键。不过不用担心，我在后续的章节会逐步给你介绍更丰富的操作方式，你要做的就是现在赶紧练习，把已有的内容消化，我知道，改变思维方式和习惯可能并不是一件简单和容易的事情。</p>
<p>加油，操作过程中有任何的问题，或者反馈都可以在留言区讨论，我会第一时间给你回复。</p>
<hr/>
<p><img alt="" src="https://static001.geekbang.org/resource/image/92/06/92862660523add24b3168f22954fa506.jpg"/></p>
</div>
</div>
</div>
<div class="article-comments pd" data-v-87ffcada=""><h2 data-v-87ffcada=""><span data-v-87ffcada="">精选留言</span></h2>
<ul data-v-87ffcada="">
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/54/c6/096dedab.jpg"/>
<div class="info">
<div class="hd"><span class="username">lisiur</span>
</div>
<div class="bd">习惯了vim后 还是觉得vim更方便些～作者能不能推荐一些vim很难或不能办到而vs code自带的快捷操作呢 <br/></div>
<span class="time">2018-09-22 17:14</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/11/43/7b/703c9c10.jpg"/>
<div class="info">
<div class="hd"><span class="username">请叫我红领巾</span>
</div>
<div class="bd">cmd - 不是缩小窗口吗？ 怎么解决切换文件后找不到上个使用的文件？ <br/></div>
<span class="time">2018-09-26 13:52</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/c5/a2/4bef8cb6.jpg"/>
<div class="info">
<div class="hd"><span class="username">鹏</span>
</div>
<div class="bd">Cmd U只能在同一个文件内跳转。如果能在不同文件光标点击位置跳转就更好了。经常在不同文件的不同位置切换，比如改A位置的时候想起另外一个文件B位置要改，改完B跳回A的时候，找A的位置就有点费神。不知道后续课程有没有相关教程。 <br/></div>
<span class="time">2018-09-24 16:55</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">试试 cmd -</p>
<p class="reply-time">2018-09-25 10:57</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/0f/a6/50/e2451127.jpg"/>
<div class="info">
<div class="hd"><span class="username">二吉</span>
</div>
<div class="bd">在命令行里搜索「缩进」/「indent」和「调整大小写」/「uppercase」都没有对应的命令，是需要安装什么插件吗？ <br/></div>
<span class="time">2018-09-24 00:38</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">你需要打开一个文件然后搜索这个命令</p>
<p class="reply-time">2018-09-25 10:57</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/cd/37/daadbe17.jpg"/>
<div class="info">
<div class="hd"><span class="username">阿弥陀佛么么哒</span>
</div>
<div class="bd">Cmd u 神器啊 <br/></div>
<span class="time">2018-09-23 14:31</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/0f/e7/2d/e71299b9.jpg"/>
<div class="info">
<div class="hd"><span class="username">Zeroassetsor</span>
</div>
<div class="bd">去除注释的快捷键是什么？ <br/></div>
<span class="time">2018-10-18 18:14</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">是同一个快捷键</p>
<p class="reply-time">2018-10-22 11:28</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/1b/50/188ce8e4.jpg"/>
<div class="info">
<div class="hd"><span class="username">JamesYinG</span>
</div>
<div class="bd">什么时候能把这些也放到vs里就好了，效率就会提高很多 <br/></div>
<span class="time">2018-10-18 10:38</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/d7/15/63258662.jpg"/>
<div class="info">
<div class="hd"><span class="username">norton/Dark</span>
</div>
<div class="bd">如果文章后面统一整理下，就方便复习了噢 <br/></div>
<span class="time">2018-10-03 15:56</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/ca/c6/9deecd82.jpg"/>
<div class="info">
<div class="hd"><span class="username">Geek_289f54</span>
</div>
<div class="bd">用control+\拆分编辑器后，想用快捷键在不同的拆分编辑器中进行跳转，该如何操作？ <br/></div>
<span class="time">2018-10-03 12:21</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/13/70/45b6ccc6.jpg"/>
<div class="info">
<div class="hd"><span class="username">万事如意</span>
</div>
<div class="bd">ctrl + - 配合 cmd + - 简直神器 <br/></div>
<span class="time">2018-09-28 09:47</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/c3/c0/8955350b.jpg"/>
<div class="info">
<div class="hd"><span class="username">机器人</span>
</div>
<div class="bd">老师，你说的这些命令我也在别的编辑器或者IDE中见过，有个别指令还是有点不同的，就像老师最后说的，这些东西记忆起来还是有点麻烦，所以想问下老师，有没有这些快捷键的英文全称解释，比如在typora下选中一行就是ctrl ＋ l 这个l应该是英文单词line的开头字母，所以这个快捷键就是选中一行，ctrl ＋ d 是选中一个词条，我就不知道这个d代表什么单词，，但是在vs2013中，ctrl ＋ l 却是删除一行，这里的l代表什么，我也不清楚，ctrl + w是选中一个词条，这里的 w 应该就是word ，比较通用的ctrl ＋ s保存，s就是save，crrl ＋ n 新建，n是new ，举这些例子的意思，就是希望，如果可以的话，老师能在讲解的过程中，顺便解释下这些快捷键字母所代表的英文单词，这样也便于理解记忆，当然，有些可能没有什么特殊意义。 <br/></div>
<span class="time">2018-09-27 10:59</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">像 ctrl d 的 d 的选择，我觉得主要是为了避免冲突，ctrl-w 大家会喜欢是关闭文件。</p>
<p class="reply-time">2018-09-28 08:17</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/11/40/5e/b8fada94.jpg"/>
<div class="info">
<div class="hd"><span class="username">Ryoma</span>
</div>
<div class="bd">ctrl + t默认是workbench.action.quickOpen的快捷键，这个如何取舍？ <br/></div>
<span class="time">2018-09-26 19:41</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">我只是举个例子哈，我觉得 ctrl t 还是要保留的。对于这个功能，我自己觉得相对低频，不用特地给一个快捷键</p>
<p class="reply-time">2018-09-28 08:49</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/56/62/5893c9d1.jpg"/>
<div class="info">
<div class="hd"><span class="username">Je 000</span>
</div>
<div class="bd">查找命令的时候，建议把命令的英文名字写一下，比如“转置游标处的字符”，这样的命令对应的英文名字。 <br/></div>
<span class="time">2018-09-26 16:04</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">没问题</p>
<p class="reply-time">2018-09-28 08:51</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/ca/ed/afae7f16.jpg"/>
<div class="info">
<div class="hd"><span class="username">麟 Goku</span>
</div>
<div class="bd">作者你好，vue 中经常需要写自定义标签，在 sb3 里有一个命令叫“slurp_find_string”，能快速生成标签，如：<br/>my-header+命令“slurp_find_string”就会直接出来&lt;my-header&gt;&lt;/my-header&gt;<br/><br/>在 vs code 中，有这种命令吗？ <br/></div>
<span class="time">2018-09-23 17:15</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/18/34/c082419c.jpg"/>
<div class="info">
<div class="hd"><span class="username">风轨</span>
</div>
<div class="bd">已经绑定eclipse的快捷键了😉 <br/></div>
<span class="time">2018-09-23 09:59</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/f3/56/5175b32f.jpg"/>
<div class="info">
<div class="hd"><span class="username">NikolaDi</span>
</div>
<div class="bd">安装了C需要官方插件，为什么有时候会提示代码格式化失败？？？ <br/></div>
<span class="time">2018-09-22 23:02</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/0f/a4/d7/5d2bfaa7.jpg"/>
<div class="info">
<div class="hd"><span class="username">Aliliin</span>
</div>
<div class="bd">每天都要练习练习形成肌肉记忆。 <br/></div>
<span class="time">2018-09-22 21:39</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/10/fa/52/aa133e65.jpg"/>
<div class="info">
<div class="hd"><span class="username">6CYS</span>
</div>
<div class="bd">老师，批量行编辑的功能后面会讲吗？比如说块选择后多行编辑 <br/></div>
<span class="time">2018-09-22 21:32</span>
<div class="reply">
<div class="reply-hd"><span>作者回复</span></div>
<p class="reply-content">后面会介绍多光标的</p>
<p class="reply-time">2018-09-25 11:02</p>
</div>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/12/c5/fd/bad0433e.jpg"/>
<div class="info">
<div class="hd"><span class="username">王希桐</span>
</div>
<div class="bd">讲的很细致，谢谢老师，这一期没什么要问的，跟着练练就好了，就是来占个楼  哈哈哈 <br/></div>
<span class="time">2018-09-22 14:37</span>
</div>
</li>
<li class="comment-item" data-v-87ffcada=""><img class="avatar" src="https://static001.geekbang.org/account/avatar/00/0f/77/48/f7448ffc.jpg"/>
<div class="info">
<div class="hd"><span class="username">dawnnao</span>
</div>
<div class="bd">有个疑问：我在训练深度网络时打印了训练进度以便查看，在 pycharm 中没问题，在 VS code 会“掉帧”，导致看不清。这个能解决吗？ <br/></div>
<span class="time">2018-09-22 11:31</span>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</body>
</html>